home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
HPAVC
/
HPAVC CD-ROM.iso
/
ABUSESRC.ZIP
/
AbuseSrc
/
macabuse
/
inc
/
ramfile.hpp
< prev
next >
Wrap
C/C++ Source or Header
|
1997-05-20
|
2KB
|
111 lines
#ifndef MEMORY_FILE
#define MEMORY_FILE
#include "jmalloc.hpp"
#include "system.h"
class memory_file
{
unsigned char *data;
public :
long wp,rp,size;
memory_file(int size) : size(size)
//{{
{
data=(unsigned char *)jmalloc(size,"memory file");
wp=rp=0;
}
//}}
~memory_file()
//{{
{
jfree(data);
}
//}}
void write_short(unsigned short x)
//{{{
{
x=int_to_local(x);
write(&x,2);
}
//}}
void write_long(unsigned long x)
//{{{
{
x=long_to_local(x);
write(&x,4);
}
//}}}
unsigned short read_short()
//{{{
{
unsigned short x;
read(&x,2);
return int_to_local(x);
}
//}}}
unsigned long read_long()
//{{{
{
unsigned long x;
read(&x,4);
return long_to_local(x);
}
//}}
long read(void *buf, int rsize)
//{{{
{
if (rp+rsize>wp)
rsize=wp-rp;
memcpy(buf,data+rp,rsize);
rp+=rsize;
return rsize;
}
//}}
long write(void *buf, int wsize)
//{{
{
if (wp+wsize>size)
wsize=size-wp;
memcpy(data+wp,buf,wsize);
wp+=wsize;
return wsize;
}
//}}
void write_byte(unsigned char c)
//{{{
{
if (wp+1<=size)
data[wp++]=c;
}
//}}
unsigned char read_byte()
//{{
{
if (rp+1<=wp)
return data[rp++];
return 0;
}
//}}
} ;
#endif
//{{{ Emacs Locals
// Local Variables:
// folded-file: t
// End:
//}}}